#ifndef TSB_H
#define TSB_H

#include <string>
#include <cstddef>
#include <vector>
#include "sha256.h"
#include "selutility.h"

namespace TSBLib {

    class TSB {
    public:
        // 构造函数：初始化与swtpm的连接
        TSB();

        // 析构函数：关闭与swtpm的连接
        ~TSB();

        // 禁止拷贝构造和拷贝赋值
        TSB(const TSB&) = delete;
        TSB& operator=(const TSB&) = delete;

        // 计算SHA256哈希值
        std::string ComputeSHA256(const void* data, size_t size);

        // 将内存数据发送到swtpm并接收响应
        int ForwardMemory(const void* input_data, size_t input_size, void* output_data, size_t& output_size);

    private:
        int sock; // 套接字描述符

        // 内部方法：建立连接
        void Connect();

        // 内部方法：关闭连接
        void Disconnect();
    };

}

#endif // TSB_H
